Re-assembly of streaming files from separate connections

ABSTRACT

The invention is a technique and apparatus for re-assembling transmitted portions of files or sub-files ( 410, 420, 430, 440 ), into a viewable file ( 400 ). The transmitting device passes the information regarding the file dividing process to the receiver so that the sub-files can be assembled ( 1130 ) or stitched ( 1120 ) together properly. The media player ( 1140 ) in the receiver uses the attached instructions to assemble the sub-files into one whole piece for viewing.

[0001] The present invention claims priority to U.S. provisional patentapplication serial No. 60/275,407, entitled “Re-Assembly of StreamingFiles from Separate Connections,” filed Mar. 12, 2001, and U.S.provisional patent application serial No. 60/275,408, entitled“Splitting and Redundant Storage on Multiple Servers”, filed Mar. 12,2001. The present application is also related to pending PCT ApplicationNo. PCT/US______, entitled “Splitting and Redundant Storage on MultipleServers,” filed Mar. 12, 2002, which is assigned to the assignee of thepresent application, the subject matter of which is incorporated hereinby reference.

BACKGROUND OF THE INVENTION

[0002] 1. Field of the Invention

[0003] The present invention relates generally to data communicationnetworks and more particularly to a method and apparatus forreassembling streaming files from separate connections.

[0004] 2. Related Art

[0005] Replicating an entire file onto multiple file servers is atechnique that can be used to speed up the delivery of data. Once thedata has been replicated onto multiple servers, and the servers havebeen geographically dispersed, the data can be delivered to an end userfrom the closest available server. In addition, the data can bedelivered from multiple servers simultaneously, where each serverprovides a portion of the total file. However, replicating the full fileonto a large number of servers uses large amounts of expensive diskstorage. For instance, a system consisting of a hundred servers with 100gigabytes of storage each would have a total of 10,000 gigabytes ofstorage available if data were not replicated. If all files must befully replicated onto each server, however, the system would only beable to store 100 gigabytes of unique files.

[0006] U.S. provisional patent application serial No. 60/275,408,entitled “Splitting and Redundant Storage on Multiple Servers”, filedMar. 12, 2001, describes a method and apparatus for dividing a file intomultiple sub-files and storing the sub-files onto one or more servers.The servers may be distributed over different geographical locations.When an end user wants the file to be delivered in a streaming fashion,the sub-files can be transmitted in parallel from one or more servers,which increases the rate at which data can be delivered.

[0007] While splitting and distributed storage provides many advantages,it creates a daunting re-assembly task for the end-user's machine.

[0008] Accordingly, there is a need in the technology for a method andapparatus for overcoming the aforementioned problems.

BRIEF SUMMARY OF THE INVENTION

[0009] The invention is a technique and apparatus for re-assemblingtransmitted portions of files or sub-files, into a viewable file. Thetransmitting device passes the information regarding the file dividingprocess to the receiver so that the sub-files can be assembled orstitched back together properly. The media player in the receiver usesthe attached instructions to assemble the sub-files into one whole piecefor viewing.

BRIEF DESCRIPTION OF THE DRAWINGS

[0010]FIG. 1 is a system block diagram of one embodiment of a networksystem in which the system and method of the invention may beimplemented.

[0011]FIG. 2 is a system block diagram of one embodiment of a computersystem which implements the embodiments of the invention.

[0012]FIG. 3 is a flow chart illustrating one embodiment of the setupprocess provided in accordance with the principles of the invention.

[0013]FIG. 4 illustrates one embodiment of a process for splitting anddistributing a file, in accordance with the principles of the invention.

[0014]FIG. 5 illustrates one embodiment of a process for replicatingstorage of sub files, provided in accordance with the principles of theinvention.

[0015]FIG. 6 is a flow chart illustrating one embodiment of a processflow for configuring a file for storage, provided in accordance with theprinciples of the invention.

[0016]FIG. 7 illustrates one embodiment of the beginning portion of aplayback process of a re-assembled media file.

[0017]FIG. 8 illustrates one embodiment of a simultaneous transferprocess, provided in accordance with the principles of the invention.

[0018]FIG. 9 illustrates one embodiment of a transfer flow from aserver, provided in accordance with the principles of the invention.

[0019]FIG. 10A illustrates one embodiment of a list of server addresses,provided in accordance with the principles of the invention.

[0020]FIG. 10B illustrates one embodiment of an initial serverassignment, provided in accordance with the principles of the invention.

[0021]FIG. 10C illustrates one embodiment of server re-assignment,provided in accordance with the principles of the invention.

[0022]FIG. 11 is a system block diagram of one example of a networkedsystem that implements one embodiment of the process of the invention.

DETAILED DESCRIPTION OF THE EMBODIMENTS

[0023] U.S. provisional patent application serial No. 60/275,408,entitled “Splitting and Redundant Storage on Multiple Servers”, filedMar. 12, 2001, the subject matter of which is incorporated herein byreference, describes the division of a single file into multiplesub-files and storage the sub-files onto one or more servers. Such afile may include text, data, graphics, video clips, JPEG elements orimages, static photographs, web pages, audio clips, animation, any typeof informational material or any combination thereof The servers may bedistributed over different geographical locations. When an end userwants the file to be delivered in a streaming fashion, the sub-files canbe transmitted in parallel from one or more servers, which increases therate at which data can be delivered.

[0024] In one embodiment, each sub-file may be replicated onto more thanone server so as to provide some redundancy. If one server is notavailable, or if the transmission link is slow or not available, thesub-file can be streamed to the end user from another server.

[0025] Replicating a file onto multiple file servers in accordance withthe principles of the invention facilitates the transmission rate of thedata. For instance, the data may be delivered to an end user from theclosest and fastest server. In addition, the data may be delivered frommultiple servers simultaneously, where each server provides a portion ofthe total file.

[0026] One aspect of the invention involves a technique and apparatusthat may be used to re-assemble the sub-files into the viewable file.Such a technique may be implemented, for example, by the receiver or bythe end-user's machine. The server passes the information regarding thesplitting process to the receiver or end-user device so that thesub-files can be assembled or stitched back together properly. The mediaplayer in the receiver will use the attached instructions to stitch thesub-files into one whole piece for viewing.

[0027] A second aspect of the invention involves the determination ofthe optimum servers to be used for the transmission, if more than oneserver can actually provide the requested sub-file, and to change to theoptimum servers at any time.

Definitions

[0028] As discussed herein, a “computer system” is a product includingcircuitry capable of processing data. The computer system may include,but is not limited to, general purpose computer systems (e.g., server,laptop, desktop, palmtop, personal electronic devices, etc.), personalcomputers (PCs), hard copy equipment (e.g., printer, plotter, faxmachine, etc.), banking equipment (e.g., an automated teller machine),and the like. Content and/or media elements refers to applicationprograms, driver programs, utility programs, file, payload, andcombinations thereof, as well as graphics, informational material(articles, stock quotes, etc.) and the like, either singly or in anycombination. A “communication link” refers to the medium or channel ofcommunication. The communication link may include, but is not limitedto, a telephone line, a modem connection, an Internet connection, anIntegrated Services Digital Network (“ISDN”) connection, an AsynchronousTransfer Mode (ATM) connection, a frame relay connection, an Ethernetconnection, a coaxial connection, a fiber optic connection, satelliteconnections (e.g. Digital Satellite Services, etc.), wirelessconnections, radio frequency (RF) links, electromagnetic links, two waypaging connections, etc., and combinations thereof.

System Overview

[0029] A description of an exemplary system, which incorporatesembodiments of the invention, is herein described. FIG. 1 shows a systemblock diagram of one embodiment of a network system 10 in which theapparatus and method of the invention is used. Referring to FIG. 1, thenetwork system 10 comprises a service center 12 that is connected overone or more communication links 20 to a remote network 30 (e.g., a widearea network or the Internet) or a remote site (e.g., a satellite, whichis not shown in FIG. 1) to one or more user computer systems 40 ₁-40_(N) (“40”). In one embodiment the service center 12 is a website. Theservice center 12 includes one or more servers 22 and one or moredatabases 24. In one embodiment, the server 22 includes software modulesthat may be downloaded for performing the processes of the invention, asdescribed in detail in the following sections. In addition, there may bemore than one service center 12, each having one or more servers.

[0030] The service center 12 may also include one or more computers 26₁-26 _(M). If a plurality of computers are used, then the computers 26₁-26 _(M) may be connected by a local area network (LAN) or any othersimilar connection technology. However, it is also possible for theservice center 12 to have other configurations. For example, a smallernumber of larger computers (i.e. a few mainframe, mini, etc. computers)with a number of internal programs or processes running on the largercomputers capable of establishing communication links to the usercomputers.

[0031] The remote network 30 or remote site allows the service center 12to provide peer-to-peer information and services to the user computers40 ₁-40 _(N), using software that is stored at the service center 12. Inone embodiment, the user computers 40 may be any computer system or anyother device that processes and/or presents audio and/or videoinformation. The one or more databases 24 connected to the servicecenter computer(s), e.g., computer 26 ₁, are used to store data. Eachuser computer 40 is connected via network connection 32 ₁-32 _(N) over acorresponding communication link 42 ₁-42 _(N) such as a local carrierexchange to a respective ISP 44 ₁-44 _(N), through which access to theremote network 30 is made.

[0032] By inputting the URL address of the target website with which theuser desires to interact, the user may be connected to various targetwebsites, such as websites 50 ₁-50 _(NN). In an alternate embodiment,each user computer 40 may be connected via network connection 32 ₁-32_(N) over a corresponding communication link 48 ₁-48 _(N) to the servicecenter 12, which provides internet access and service to the usercomputer(s) 40. In a further embodiment, the display screen for viewingthe content or media elements may be located on a television coupled tothe network 30. In this case, navigation through the content or mediaelements may be provided through the use of control buttons on a remotecontrol unit for controlling viewing of the television, or by othermeans known in the art.

[0033] One aspect of the present invention relates to retrieval anddelivery of content and/or media elements. The software for providingsuch processes may be developed and/or stored on a computer 40, or maybe developed using one of the computers 26 ₁-26 _(M). Upon completion ofthe development process, the software may be stored in the computer 40or in the database 24. Alternatively, the software may be stored on amachine-readable medium, in any of the computers 40 or computers 26 ₁-26_(M).

[0034] Referring to FIG. 2, the computer system 100 (representing eitherof computer 26 or 40) comprises a processor or a central processing unit(CPU) 110. The illustrated CPU 110 includes an Arithmetic Logic Unit(ALU) for performing computations, a collection of registers fortemporary storage of data and instructions, and a control unit forcontrolling operation for the system 100. In one embodiment, the CPU 110includes any one of the x86, Pentium™, Pentium II™, and Pentium Pro™microprocessors as marketed by Intel™ Corporation, the K-6microprocessor as marketed by AMD™, or the 6x86MX microprocessor asmarketed by Cyrix™ Corp. Further examples include the Alpha™ processoras marketed by Digital Equipment Corporation™, the 680X0 processor asmarketed by Motorola™; or the Power PC™ processor as marketed by IBM™.In addition, any of a variety of other processors, including those fromSun Microsystems, MIPS, IBM, Motorola, NEC, Cyrix, AMD, Nexgen andothers may be used for implementing CPU 110. The CPU 110 is not limitedto microprocessor but may take on other forms such as microcontrollers,digital signal processors, reduced instruction set computers (RISC),application specific integrated circuits, and the like. Although shownwith one CPU 110, computer system 100 may alternatively include multipleprocessing units.

[0035] The CPU 110 is coupled to a bus controller 112. The buscontroller 112 may include a memory controller (not shown) integratedtherein, though the memory controller may be external to the buscontroller 112. The memory controller provides an interface for accessby the CPU 110 or other devices to memory 116 via memory bus 114. In oneembodiment, the system memory 116 includes synchronous dynamic randomaccess memory (SDRAM). System memory 116 may optionally include anyadditional or alternative high speed memory device or memory circuitry.The bus controller 112 is coupled to a system bus 120 that may be aperipheral component interconnect (PCI) bus, Industry StandardArchitecture (ISA) bus, etc. Coupled to the system bus 120 are agraphics controller, a graphics engine or a video controller 132, a massstorage device 150, a communication interface device 152, and one ormore input/output (I/O) devices 168 ₁-168 _(N). The video controller 132is coupled to a video memory 136 (e.g., 8 Megabytes) and video BIOS 140,all of which may be integrated onto a single card or device, asdesignated by numeral 144. The video memory 136 is used to containdisplay data for displaying information on the display screen 148, andthe video BIOS 140 includes code and video services for controlling thevideo controller 132. In another embodiment, the video controller 132 iscoupled to the CPU 110 through an Advanced Graphics Port (AGP) bus.

[0036] The mass storage device 150 includes (but is not limited to) ahard disc, floppy disc, CD-ROM, DVD-ROM, tape, high density floppy, highcapacity removable media, low capacity removable media, solid statememory device, etc., and combinations thereof The mass storage device150 may include any other mass storage medium. The communicationinterface device 156 includes a network card, a modem interface, etc.for accessing network 164 via communications link 160. The I/O devices168 ₁-168 _(N) include a keyboard, mouse, audio/sound card, printer, andthe like. The I/O devices 168 ₁-168 _(N) may be disk drive, such as acompact disc (CD) drive, a hard disc drive, a tape drive, a zip drive, ajazz drive, a digital versatile disc (DVD) drive, a magneto-optical diskdrive, a high density floppy drive, a high capacity removable mediadrive, a low capacity media device, and/or any combination thereof.

[0037] The information, content and/or application software may bestored in the database 24, on the computers 40, or on a machine-readablemedium. The information, content and/or application software may also bemade available to users such as those located at user computer 1-N,i.e., computers 40 ₁-40 _(N), through service center 12 or by means ofthe machine-readable medium.

[0038] As discussed earlier, one aspect of the invention relates to asystem and method for providing media over a network in a non-sequentialfashion. In one embodiment, a request may be made by a user for contentor media elements. The system and process of the invention may retrievethe desired content/media element from either database 24 or one oftarget websites 50 ₁-50 _(NN). The retrieved content/media element isthen processed (e.g., decompressed, formatted, etc.). Users may thenview the processed content/media element on a display device, such as auser computer 40. In another embodiment, the desired content/media isprovided to the user in a non-sequential fashion.

[0039] In accordance with the practices of persons skilled in the art ofcomputer programming, the invention is described below with reference tosymbolic representations of operations that are performed by a computersystem or a like electronic system. Such operations are sometimesreferred to as being computer-executed. It will be appreciated thatoperations that are symbolically represented include the manipulation bya processor, such as a central processing unit, of electrical signalsrepresenting data bits and the maintenance of data its at memorylocations such as in system memory, as well as other processing ofsignals. The memory locations where data its are maintained are physicallocations that have particular electrical, magnetic, optical, or organicproperties corresponding to the data bits. Thus, the term “server” isunderstood to include any electronic device that contains a processor,such as a central processing unit.

[0040] When implemented in software, the elements of the invention areessentially the code segments to perform the necessary tasks. Theprogram or code segments can be stored in a processor readable medium ortransmitted by a computer data signal embodied in a carrier wave over atransmission medium or communication link. The “processor readablemedium” or “machine-readable medium” may include any medium that canstore or transfer information. Examples of the processor readable mediuminclude an electronic circuit, a semiconductor memory device, a readonly memory (ROM), a flash memory, an erasable ROM (EROM), a floppydiskette, a compact disk ROM (CD-ROM), an optical disk, a hard disk, afiber optic medium, etc. The computer data signal may include any signalthat can propagate over a transmission medium such as electronic networkchannels, optical fibers, air, electromagnetic links, a radio-frequencylink, etc. The codes segments may be downloaded via computer networkssuch as the Internet, Intranet, etc.

Setup Process

[0041] Referring now to FIG. 3, in which a setup process is depicted.Setup process 300 begins with the development of the client-sidesoftware at block 305. As will be discussed in more detail below, theclient-side software will enable a user to communicate with client-sidesoftware by issuing read requests to one or more servers, according toone embodiment. In another embodiment, the client-side software alsocomprises stitching software which may be used to reassemble a requestedfile, or portion thereof, which has been previously split. One exampleof a method for reassembling streaming files is provided in related PCTApplication No. PCT/US______, entitled “Re-assembly of Streaming Filesfrom Separate Connections” (hereinafter the “PCT/US______ patentapplication”), which describes the reassembly of the sub-files into aviewable file upon receipt by a client system. In one embodiment, theserver passes the information regarding the splitting process to theclient system to facilitate the sub-file reassembly process.

[0042] Server-side software is developed at block 310. As will bediscussed in more detail below, the server-side software will be able toprocess random read requests, according to one embodiment. Theserver-side software of block 310 may also enable a server to performoffset computations, thereby enabling the server to stream content to aclient system beginning at the requested location. The server-sidesoftware may also comprise software to split a single file into multiplesub-files, which may then be distributed and stored on one or moreservers. One example of a method for splitting files into sub-files isprovided in related PCT Application No. PCT/US______, entitled“Splitting and Redundant Storage on Multiple Servers” (hereinafter the“PCT/US______ patent application”), which describes the division of asingle file into multiple sub-files which are then stored on one or moreservers. Such a file may include text, data, graphics, video clips, JPEGelements or images, static photographs, web pages, audio clips,animation, any type of informational material or any combinationthereof. The servers may be distributed over different geographicallocations. In one embodiment, the sub-files can be transmitted inparallel from one or more servers in response to a user request, therebyincreasing the rate at which data can be delivered.

[0043] While in the embodiment of FIG. 3 the development of theserver-side software takes place at block 310, it should be appreciatedthat the server-side software may be developed before the client-sidesoftware of block 305. It should further be appreciated that thedevelopment process of block 305 or block 310 may take place on any oneof user computers 40, computers 26 ₁-26 _(M), server 22, or any othersystem capable of being used for software development. It is alsopossible to install both client-side and server-side software on thesame client computer to implement a peer-to-peer system.

[0044] Continuing to refer to FIG. 3, the software of block 305 and 310are installed at block 315. It should be appreciated that theclient-side software of block 305 may be installed on one or more usercomputers 40, while the server-side software of block 310 may beinstalled on server 22. In another embodiment the server-side softwareis installed on a plurality of servers connected either to the network30 or to the client systems directly over a communications link.

[0045] At block 320, media presentation software is installed on one ormore client system, such as one or more user computers 40. Mediapresentation software may include any of Windows Media Player, RealPlayer, QuickTime Player, or any other media players capable ofreceiving streaming content. It should also be appreciated that themedia presentations software installation of block 320 may occur beforethe installation activities of blocks 315, and even before thedevelopment activities of blocks 305 and 310. Thereafter, the clientsystem(s) on which the client-side software was loaded may be connectedto the server(s) running the server-side software. In one embodiment,the client system communicates with the server(s) by connecting to theWorld Wide Web, while in another embodiment the client system(s) and theserver(s) communicate over a LAN connection. However, it should beappreciated that the client system(s) may interact with the server(s)over any known communication link.

[0046]FIG. 4 illustrates one embodiment of a process for dividing afile, in accordance with the principles of the invention. In thisembodiment, a 128 kilobyte file is divided and distributed. The size ofthe file is merely illustrative, and it is understood that the inventionmay be implemented using a file of a greater or smaller size. Such afile may include text, data, graphics, video clips, JPEG elements orimages, static photographs, web pages, audio clips, animation, any typeof informational material or any combination thereof.

[0047] Prior to transmission, the original file is configured fortransmission. For example, the original file may be divided into Nsegments or chunks, where N is a positive integer. The N segments areassembled into M sub-files, where M is a positive integer. Each of thesub-files has a file name and other file attributes, and is treated bythe operating system's file system as just another file. In the presentexample, the original 128 kilobyte file is split up into sixteen 8 KBsegments (i.e., N=16 in the example). The sixteen segments are assembledinto four sub-files (i.e., M=4 in the example), where the first 8 KBchunk of the original file goes into the first sub-file S1, the secondchunk of the original file goes into the second sub-file S2, and so on.The fifth chunk of the original file would go into the first sub-fileS1, after the first chunk of the original file. Thus, in one embodiment,the segments may be assigned to sub-files on a modulo 4 arrangement.Although in the present embodiment, the file is divided into 8 kilobytesegments, it is understood that the size of the segments and the numberof sub-files is arbitrary. The invention may be implemented using alarger or smaller size chunk and a larger or smaller number ofsub-files. In addition, each of the sub-files may be of different sizes.However, in one embodiment, the segments may be distributed in moduloorder and the sub-files may be of substantially equal size.

[0048] The four sub-files S1 through S4 may be distributed to multipleservers. As shown in the example of FIG. 5, the first sub-file S1 may bedistributed to three servers, servers A, B, and C. The second sub-fileS2 may be distributed to servers D and A. The third sub-file S3 may bedistributed to servers B and C. The fourth sub-file S4 may bedistributed to servers D and B. It is understood that the sub-files maybe distributed to a fewer or greater number of servers. Each sub filemay be transmitted over a separate communication link, such as a TCP/IPconnection to a receiver. In one embodiment, the Hyper Text TransferProtocol (HTTP) may be used for each connection.

[0049] In one embodiment, the sub-files can be replicated so that themost frequently accessed files and sub-files are replicated onto moreservers, while the less frequently accessed files and sub-files arereplicated onto fewer servers. Thus, the sub files may be replicatedonto multiple servers based on anticipated or actual demand. This savesdisk space, since infrequently accessed files would take up less totaldisk space. Disk input/output bandwidth on each server would also besaved. For example, each server would read a 32 kilobyte sub-file andtransmit the sub-file to the end user. If the files were not split upbeforehand, each server would read the entire 128 kilobyte file, whiletransmitting only 32 kilobytes.

[0050]FIG. 6 is a flow chart illustrating one embodiment of a processflow for configuring a file for storage. Proceeding from a START state,the process 600 proceeds to configure an original file, such as file 400of FIG. 4, for transmission. The process 600 begins by determining thenumber and size of segments that the original file 400 should be dividedinto, as shown in process block 620. The process 600 then determines thesize and number of sub-files that the segments should be assembled into(process block 630). Next, the process 600 determines the order ofassembling the segments into each sub-file (process block 640).

[0051] The process 600 is then ready to divide the original file, andproceeds to configure the original file by dividing it into segments,and thereafter assembling the segments into the sub-files, as discussedabove (process block 650). The process 600 then determines how thesub-files should be distributed to various servers for storage (processblock 660). When this has been determined, the process 600 distributesand stores the sub-files onto the servers (process block 670). Theprocess 600 then terminates or returns to the main process.

[0052]FIG. 7 illustrates one embodiment of the beginning portion of aplayback process of a re-assembled media file. For illustrativepurposes, the playback process is described with reference to an enduser's personal computer (PC). It is understood that the playbackprocess and other processes described herein may be implemented on thereceiver device in other electronic systems. As shown in FIG. 7, the enduser would view a web page that contains a link to a video clip. Thelink may be of the form “etp://1.2.3.4/fileS.cfg”. When the end userclicks on the web page link, the web browser receives the file namedfile1.cfg from the server with the Internet address of 1.2.3.4, whichwill start the stitching program associated with the “etp:” protocol,and which will then transfer the contents of fileS.cfg to the stitchingprogram.

[0053] Prior to transmission, the original file is configured fortransmission. For example, the original file may be divided into Nsegments, where N is a positive integer. The N segments are assembledinto M sub-files, where M is a positive integer. In one embodiment, thefirst chunk of the original file goes into the first sub-file S1, thesecond chunk of the original file goes into the second sub-file S2, andso on. The fifth chunk of the original file would go into the firstsub-file S1, after the first chunk of the original file.

[0054] The contents of fileS.cfg may contain information such as thesize of the segments, the number N of the segments, the number M ofsub-files, the file size of the original file, and a list of UniversalResource Locator (URL) names of the sub-files. It is understood by oneof skill in the art that it is possible to provide the configurationinformation through other techniques. For instance, it is possible toprovide this information on a static or dynamically generated HTML webpage. It is also possible to secure the configuration information byencrypting it.

[0055] The stitching program will use the configuration information tosimultaneously request sub-file S1 from server 11.1.1.1, sub-file S2from server 11.1.1.2, sub-file S3 from server 11.1.1.3, and sub-file S4from server 11.1.1.4, as illustrated in FIG. 8. Although this exampleshows one sub-file being transmitted from each server, it is possiblefor multiple sub-files to originate from a single server, with eachsub-file transmitted on a separate TCP/IP connection.

[0056] As shown in FIG. 9, sub-file S1 contains segments 1, 5, 9, and 13of the original file. The chunk 1 data will be transmitted first, thenchunk 5, and so on. Sub-file S2 contains segments 2, 6, 10, and 14 ofthe original file. The chunk 2 data will be transmitted first, thenchunk 6, and so on. The segments of sub-file S1 will be transmittedseparately and in parallel with the segments of sub-file S2, becauseeach sub-file would be transmitted over separate TCP/IP connections orvia separate communication links.

[0057] In one embodiment, the sub-files will be transmitted at differentrates from the different servers. In alternate embodiments, thesub-files may be transmitted at the same rates from one or more servers.Transmission errors, or lost packets for instance, will cause the TCP/IPprotocol to retransmit a data packet until the packet is receivedcorrectly. This retransmission, among other things, will affect thetransmission rate. Some paths may have more errors and lost packets thanother paths. Some paths may also have more router hops and delays thanother paths. This means that the reassembly of the segments into theoriginal order of segments cannot be performed until the next requiredchunk has been fully and correctly received. For instance, once chunk 1has been fully received and sent on to the media player, chunk 2 cannotbe sent to the media player until it has been fully and correctlyreceived, even if segments 3, 4, and 5 have been already received.

[0058] Once the media player has started, it must have data delivered atthe proper rate, or the sound or video quality will suffer. To helpguarantee that the data will be received in time, the stitching programmeasures the speed of each connection as data is received. If data isreceived at too slow of a rate on a connection, the slow connection canbe terminated, and a new connection can be started to the fastest serverthat contains a copy of the required sub-file.

[0059] This server switching process may be implemented by providingmultiple URLs in the configuration file. Each URL refers to a serverthat can provide the needed sub-file. An example of a URL list is shownin FIG. 10A. The list has three server choices for each sub-file. Theinitial server assignment for each sub-file is made from the firstchoice of possible assignments. The media transfers start out usingthese initial server assignments, as shown in FIG. 10B. Sub-file S1.mpgis transferred from the server with the IP address of 11.1.1.1 (anexemplary IP address) using the HTTP protocol, sub-file S2.mpg istransferred from the server with the IP address of 11.1.1.2, sub-fileS3.mpg is transferred from the server with the IP address of 11.1.1.3,and sub-file S4.mpg is transferred from the server with the IP addressof 11.1.1.4.

[0060] At periodic intervals, the transfer rate from each server ismeasured and compared to a threshold for switching. If a sub-file'stransfer rate is below the threshold, a new connection is establishedwith the fastest server available for the sub-file. File offsetinformation may be passed to the fast server about how much data hadbeen received by the slow server, so that the fast server would not haveto transmit duplicate information already received from the slow server.The connection to the slow server could be terminated once the newconnection to the fast server has been established.

[0061] Among other options, the transfer rate switching threshold may befixed, may be passed as a parameter in the configuration file, or may bemade a function of other variables, such as the projected data bufferempty time. For instance, the transfer rate switching threshold may beincreased if a large amount of data is buffered before it is needed, orthe threshold may be decreased if only a small amount of data isbuffered and the media player may soon be running out of input data.

[0062]FIG. 10C illustrates one embodiment of how the server connectionscould be re-assigned, assuming that the connection from server 11.1.1.2for sub-file S2.mpg and the connection from server 11.1.1.3 for sub-fileS3.mpg were slow and below the transfer rate switching threshold. Forsub-file S2.mpg, the server 11.1.1.1 is chosen for the new connectionbecause that server is already providing data for sub-file A1.mpg at arate above the transfer rate switching threshold. For sub-file S3.mpg,the server 11.1.1.4 is chosen for the new connection because that serveris already providing data for sub-file S1.mpg at a rate above thetransfer rate switching threshold.

[0063] This procedure allows data to be transferred from multipleservers simultaneously for higher transfer rates. The data would berecombined, or stitched back together, for the media player. Each path'sdata transfer rate may be periodically measured and the slow paths orservers may be switched out in favor of faster paths or servers. Thisswitching may occur at the very start of the transfer, so that it wouldnot be necessary to keep a continuously updated map of the Internet'scongestion. The switching may also occur periodically during the mediaplayback, so that unexpected slowdowns in data transfer from one or moreservers or paths could be countered. Only a small amount of bufferingwill be needed to make the switching process transparent to the enduser.

[0064]FIG. 11 is a block diagram illustrating one example of a networkedsystem 1100 that implements one embodiment of the invention. Clientsystem 1100 running client-side software, is connected to one or moreservers over network 30. Moreover, in this embodiment Servers A, B, Cand D are running server-side software, and are connected to network 30.However, it should be appreciated that client system 1110 and ServersA-D may be connected using any known communication link.

[0065] In one embodiment, the client-side software of client system 1110includes stitching software 1120, which may be used to createreassembled file 1130. Thereafter, reassembled file 1130 may be providedto media presentation software 1140 for display. In one embodiment,stitching software 1120 is used to reassemble file segments which havebeen transferred from one or more of the Servers A-D. While any knownmeans of reassembling file segments may be used, the method described inthe PCT/US______ patent application may be used, according to oneembodiment.

[0066] Continuing to refer to FIG. 11, sub-files S1 and S2 from FIG. 4have been loaded onto Server A. Similarly, sub-files S1, S3 and S4 havebeen loaded onto Server B, sub-files S1 and S3 have been loaded ontoServer C and sub-files S2 and S4 have been loaded onto Server D. Thus,in this embodiment the original file 400 (see FIG. 4) has been splitinto four sub-files S1 410, S2 420, S3 430 and S4 440, with each of thefour sub-files S1-S4 being available from more than one server. Asdescribed earlier, this arrangement improves the speed at which a userwill be able to download a given file.

[0067] The sub-files S1, S2, S3 and S4 may be accessed via network 30upon demand. Upon retrieval, the files may be recombined using stitchingsoftware 1120 into reassembled file 1130. Thereafter, reassembled file1130 may be provided to media presentation software 1140 for display.

[0068] While the preceding description has been directed to particularembodiments, it is understood that those skilled in the art may conceivemodifications and/or variations to the specific embodiments describedherein. Any such modifications or variations which fall within thepurview of this description are intended to be included therein as well.It is understood that the description herein is intended to beillustrative only and is not intended to limit the scope of theinvention.

What is claimed is:
 1. A method for receiving content over a network,where said content has been split into a plurality of segments andorganized into a plurality of sub-files, the method comprising:receiving sub-file data over the network, said sub-file data to identifya location of each of said plurality of sub-files; requesting, usingsaid sub-file data, a first sub-file and a second sub-file of saidplurality of sub-files; receiving over the network, in response to saidrequest, said first sub-file and said second sub-file; and, combiningsaid first sub-file and second sub-file into a reassembled file.
 2. Themethod of claim 1 wherein said receiving sub-file data over the networkcomprises receiving sub-file data over the network, where said sub-filedata is to identify the location of each of said plurality of sub-files,and further to identify which of said plurality of segments are in eachof said plurality of sub-files.
 3. The method of claim 2, wherein saidsub-file data is to further identify an order in which said plurality ofsegments are organized into said plurality of sub-files.
 4. The methodof claim 3, wherein said order is characterized by organizing a firstsegment into the first sub-file, a second segment into the secondsub-file and a third segment into the first sub-file.
 5. The method ofclaim 3, wherein said plurality of sub-files are further organized intoa plurality of sub-file groups, and said order is characterized byorganizing a first sequence of segments across a first sub-file group,followed by organizing a second sequence of segments across said firstsub-file group.
 6. The method of claim 1, wherein said receivingsub-file data is in response to a user request for said content.
 7. Themethod of claim 1, wherein said receiving sub-file data over the networkcomprises receiving sub-file data over the network, said sub-file datato include a Universal Resource Locator (URL) for each of said pluralityof sub-files.
 8. The method of claim 1, wherein said requesting, usingsaid sub-file data, the first sub-file and the second sub-file comprisesrequesting, using said sub-file data, the first sub-file from a firstserver and the second sub-file from a second server.
 9. The method ofclaim 1, wherein receiving, in response to said request, said firstsub-file and said second sub-file comprises receiving over the network,in response to said request, said first sub-file from a network server,and receiving over the network, in response to said request, said secondsub-file from said network server.
 10. The method of claim 1, whereinreceiving, in response to said request, said first sub-file and saidsecond sub-file comprises receiving over the network, in response tosaid request, said first sub-file from a first server and said secondsub-file from a second server.
 11. The method of claim 1, whereincombining said first sub-file and second sub-file comprises combiningsaid first sub-file and second sub-file into a reassembled file usingthe sub-file data.
 12. The method of claim 11, further comprisingpresenting said reassembled file on a user computer using a mediaplayer.
 13. An apparatus for receiving content over a network, wheresaid content has been split into a plurality of segments and organizedinto a plurality of sub-files, the apparatus comprising: a processor; acommunications port, coupled to the processor, said communications portto be used to connect said apparatus to a network; and a memory, coupledto the processor, said memory to include instruction sequences to causesaid processor to, receive sub-file data over the network, said sub-filedata to identify a location each of said plurality of sub-files,request, using said sub-file data, a first sub-file and a secondsub-file of said plurality of sub-files, receive over the network, inresponse to said request, said first sub-file and said second sub-file,and, combine said first sub-file and second sub-file into a reassembledfile.
 14. The apparatus of claim 13, wherein said sub-file data furtheridentifies which of said plurality of segments are in each of saidplurality of sub-files.
 15. The apparatus of claim 14, wherein saidsub-file data is to further identify an order in which said plurality ofsegments are organized into said plurality of sub-files.
 16. Theapparatus of claim 15, wherein said order is characterized by organizinga first segment into the first sub-file, a second segment into thesecond sub-file and a third segment into the first sub-file.
 17. Theapparatus of claim 15, wherein said plurality of sub-files are furtherorganized into a plurality of sub-file groups, and said order ischaracterized by organizing a first sequence of segments across a firstsub-file group, followed by organizing a second sequence of segmentsacross said first sub-file group.
 18. The apparatus of claim 13, whereinsaid sub-file data is to be received in response to a user request forsaid content.
 19. The apparatus of claim 13, wherein said sub-file datais to include a Universal Resource Locator (URL) for each of saidplurality of sub-files.
 20. The apparatus of claim 13, wherein saidmemory further includes instruction sequences to cause said processor torequest, using said sub-file data, the first sub-file from a firstserver and the second sub-file from a second server.
 21. The apparatusof claim 13, wherein said memory further includes instruction sequencesto cause said processor to receive over the network, in response to saidrequest, said first sub-file from a network server, and to receive overthe network, in response to said request, said second sub-file from saidnetwork server.
 22. The apparatus of claim 13, wherein said memoryfurther includes instruction sequences to cause said processor toreceive, in response to said request, said first sub-file from a firstserver and said second sub-file from a second server.
 23. The apparatusof claim 13, wherein said memory further includes instruction sequencesto cause said processor to combine said first sub-file and secondsub-file into a reassembled file using the sub-file data.
 24. Theapparatus of claim 23, wherein said memory further includes instructionsequences to cause said processor to present said reassembled file usinga media player.
 25. A computer program product, comprising: a computerusable medium having computer readable program code embodied therein toprovide content over a network where the content has been split into aplurality of segments and organized into a plurality of sub-files, thecomputer readable program code in said computer readable program productcomprising: first computer readable program code to receive sub-filedata over the network, said sub-file data to identify a location of eachof said plurality of sub-files; second computer readable program code toissue a request, using said sub-file data, for a first sub-file and asecond sub-file of said plurality of sub-files; third computer readableprogram code to receive over the network, in response to said request,said first sub-file and said second sub-file; and, fourth computerreadable program code to combine said first sub-file and second sub-fileinto a reassembled file.
 26. The computer program product of claim 25,wherein the first computer readable program code comprises firstcomputer readable program code to receive sub-file data over thenetwork, where said sub-file data is to identify the location of each ofsaid plurality of sub-files, and further to identify which of saidplurality of segments are in each of said plurality of sub-files. 27.The computer program product of claim 26, wherein the first computerreadable program code comprises first computer readable program code toreceive sub-file data over the network, where said sub-file data is toidentify the location of each of said plurality of sub-files, identifywhich of said plurality of segments are in each of said plurality ofsub-files, and to identify an order in which said plurality of segmentsare organized into said plurality of sub-files.
 28. The apparatus ofclaim 27, wherein said order is characterized by organizing a firstsegment into the first sub-file, a second segment into the secondsub-file and a third segment into the first sub-file.
 29. The apparatusof claim 27, wherein said plurality of sub-files are further organizedinto a plurality of sub-file groups, and said order is characterized byorganizing a first sequence of segments across a first sub-file group,followed by organizing a second sequence of segments across said firstsub-file group.
 30. The computer program product of claim 25, whereinthe first computer readable program code comprises first computerreadable program code to receive sub-file data over the network inresponse to a user request for said content, said sub-file data toidentify a location of each of said plurality of sub-files.
 31. Thecomputer program product of claim 25, wherein the first computerreadable program code comprises first computer readable program code toreceive sub-file data over the network, said sub-file data to include aUniversal Resource Locator (URL) for each of said plurality ofsub-files.
 32. The computer program product of claim 25, wherein thesecond computer readable program code comprises second computer readableprogram code to issue the request, using said sub-file data, for thefirst sub-file from a first server and the second sub-file from a secondserver.
 33. The computer program product of claim 25, wherein the thirdcomputer readable program code comprises third computer readable programcode to receive over the network, in response to said request, saidfirst sub-file from a network server, and to receive over the network,in response to said request, said second sub-file from said networkserver.
 34. The computer program product of claim 25, wherein the thirdcomputer readable program code comprises third computer readable programcode to receive over the network, in response to said request, saidfirst sub-file from a first server and said second sub-file from asecond server.
 35. The computer program product of claim 25, wherein thefourth computer readable program code comprises fourth computer readableprogram code to combine said first sub-file and second sub-file into areassembled file using the sub-file data.
 36. The computer programproduct of claim 35, further comprising fifth computer readable programcode to present said reassembled file on a user computer using a mediaplayer.